In the last decade, usage of personal computers has moved beyond the tasks of word processing and mathematical operations. Computers today are often portable, and are regularly connected to different systems that include different hardware, software, and/or peripheral devices. Thus, today's computers must be able to operate with a variety of hardware, software, and peripheral devices, including, for example, compact disk read-only-memory (generally referred to as "CD-ROM") devices, graphics cards, sound cards, and scanners. This new widespread and multifaceted use of the personal computer has placed a premium on making the personal computer "user friendly" during the connection or installation of new hardware or software devices, such as peripheral devices or adapter boards, with the computer.
An integral pan of making a computer "user friendly" is software commonly referred to as an operating system ("OS"). The OS is software that is typically run by a microprocessor within the computer. Typically, the OS controls the creation and deletion of files in memory, allocation of memory to application programs and other common functions that are performed by the microprocessor in controlling "basic operations" of the computer.
When operating systems for personal computers were first written, the nature of the hardware and software running under the OS was generally well known because of the limited types of commercially available devices and programs that could be used with the computer. For example, very early "disk" operating systems controlled little more than the random access memory hard disk drive, hence leading to the label for such older systems of "Disk Operating System" (DOS). The uses of the computer were limited by those few standard devices that could be controlled by the old DOS. The most common DOS for personal computers in the world was sold under the "MS-DOS" trademark, and was developed and marketed by the assignee to the present invention, Microsoft Corporation, of Redmond, Wash.
As can be expected, however, new and different peripheral devices were and are continuously being developed and connected to computers. Indeed, today's computers are regularly running several application programs at one time, and may be connected to a number of different peripheral devices. Moreover, the peripheral devices connected to the computer are frequently changed over time.
Software modules must be written to control these peripheral devices. One such software module is a graphical user interface operating system developed and marketed under the trademark "WINDOWS" by Microsoft Corporation, which is the assignee of the present invention. Graphical user interface operating systems, such as the OS sold under the "WINDOWS" trademark, support the running of multiple application programs simultaneously on a computer, and are familiar to those skilled in the art.
The newer operating systems are distinct from earlier operating systems in that files written for the newer operating systems are created in "new executable" format. Those skilled in the art will recognize the "new executable" format that is created when software is written, compiled and linked using certain compilers, such as the Microsoft C++7.0 Compiler included with the Windows Software Development Kit, sold by Microsoft Corporation. Reference to an "operating system" throughout this application refers to operating systems that operate upon software that is in new executable format, including but not limited to the OS sold under the "WINDOWS" trademark and operating systems compatible therewith. The new executable format is a file format that standardizes executable files for use with the operating systems, and is described in detail herein.
The operating systems provide for control over some hardware and software devices, such as certain makes of CD-ROM devices. However, because new types and makes of hardware and software devices are constantly being created, other software must still be layered on top of, or operate in conjunction with, the present OS. This often becomes apparent to the user when the user first attempts to use a new peripheral device connected to the computer. The peripheral device will not operate unless certain necessary files are installed on the computer.
The files needed in today's computers to control hardware or software devices, such as a peripheral device, include device driver files and library files. Both device driver and library files are executable files that can serve many functions, including to control and make possible the use of peripheral devices by the computer. A device driver file is a software module or program that the computer uses to "drive" or control software operations and peripheral devices. A library file is an executable software module containing commonly needed or used routines that is loaded when called by the OS, linked when needed, and may be removed from memory until it is needed again. A library driver calls and links the library files as necessary.
Frequently, device driver files are used to communicate with and control peripheral devices, such as printers, CD-ROMs, or modems, thereby linking the peripheral device to the OS. The device driver files are thus used in conjunction with the OS to control the peripheral device. A device driver file is therefore necessary when adding new hardware or software devices, or specific makes of devices, to a computer. A library file may be necessary to control the peripheral device.
The device driver and library files are shared by all application programs that use the peripheral device. The device driver and library files enable the computer to operate various hardware or software devices. Associated with library files and device driver files are non-executable text files, commonly called INF files by those in the industry. The INF file (named for the INF extension on the end of the file and the fact that the file contains information) is a non-executable text file containing set-up and installation information necessary for the computer to use the device driver and library files.
Other files, such as a virtual device driver ("VxD") file, may be necessary to operate a hardware or software device, such as a peripheral device attached to a computer. The VxD device driver file usually works in cooperation with a device driver file (DRV file). A VxD device driver file is a device driver that runs in Ring 0 protected mode of the microprocessor. The VxD device driver files extend the services provided by the operating system to take advantage of as many services as possible that are offered by newer versions of the operating system. Thus, the VxD device driver file is still another executable file that is needed to control a hardware or software device.
Also, other device driver files, such as an NT device driver, may be required or desirable to control a peripheral device. The NT driver file may be needed to utilize a peripheral device with the OS sold under the trademark "WINDOWS NT" by Microsoft Corporation. Thus, different operating systems may require different device driver files, creating further opportunities for confusing the user as to what files are needed in the computer.
The device driver file, VxD device driver file, NT device driver file, and library file referenced above are executable files that are frequently referred to as dynamic link library (DLL) files. DLL files are files in new executable format containing a single piece of code, such as a device driver, for execution by the OS.
As is familiar to those skilled in the art, DLL files are linked to an application program at run time (hence the name "dynamic link"). DLL files allow multiple applications to share a single software module. For example, if two applications are running simultaneously, and both use a particular function in a DLL file, both applications share a single copy of the DLL file to save memory. DLL files can be used to share software routines and data for purposes such as sharing hardware resources.
In addition to the files referenced above, the computer user also must install an application program that allows the computer to interact with and control the peripheral device. For example, connected to the computer a communications application program will control a modem to initiate a call and send data. Typically, a manufacturer supplies software (the application program) with the peripheral device to enable the computer to utilize the abilities of the peripheral device. However, the floppy disk carrying the application program often does not contain every file and/or program necessary to use the peripheral device.
Those skilled in the art will recognize a fundamental constraint of the above mentioned operating systems that affects the DLL files and has led to the confusing creation of all the above-referenced different files for performing different functions. Specifically, the operating systems will not support "multi-streaming" in executable files, such as the DLL. Thus, all of the above listed files must be separate and distinct. Furthermore, a single file can not contain executable code (such as a device driver file) and a non-executable text file (such as an INF file). These OS constraints have lead to the creation of all the different executable files mentioned above, such as device driver files and library files.
The ability to run "New Executable" format files and the inability to multistream are characteristics of the above-referenced operating system. These characteristics are likely to be preserved in future operating systems to maintain backward compatibility with older software. Preserving backward compatibility is imperative.
The maintenance of backward compatibility has a cost. To use a new peripheral device connected to a computer, it may be necessary to load an INF file and several device driver and/or library files that perform certain functions in the computer. The INF file, device driver file and library file must be available to use the peripheral device. Users of computers with current operating systems are thus faced with accessing and loading many different files, including an application program, to use a peripheral device.
For example, the user who buys a new peripheral device, such as a CD-ROM device or a scanner, may have to install a device driver file not previously loaded on the computer before the CD-ROM can be used. The user may have to contact a software manufacturer to get the device driver file for the new peripheral device, or try to obtain the software from other sources. Also, the user must ensure that the device driver file is appropriate for the OS (i.e., the OS sold under the trademark "WINDOWS NT" versus the OS sold under the trademark "WINDOWS 3.1"). Also, the appropriate INF file must be found and loaded on the computer.
Indeed, it is not uncommon that the several files needed to utilize a peripheral device or the like may be supplied separately, thereby requiring the user to individually obtain the files needed to use the device. Even if all the files are together, for example on a floppy disk, upon viewing the contents of the floppy disk containing an application program, multiple device driver files, and one or more INF files, the user may often be confused. Even if the user locates and obtains all the files necessary to operate the peripheral device, users generally will not understand where all of the files must be loaded in the computer. Indeed, the user may have to go through several steps to add a device driver file to the list of device driver files in the system. Similar steps may have to be taken to add the other needed files (i.e., INF file and library files) to the computer.
While this issue may seem like a relatively minor "one-time" problem, a novice computer user can be easily frustrated by such installation procedures. In addition, those in the computer industry predict that many, if not most, of the computers sold in the near future will be portable. Thus, a computer may be carried to different stations (i.e., home and office) where it may be connected to any number of different peripheral devices. The different files necessary for operating these devices need to be easily accessible at each location.
Unfortunately, this need to load multiple files on a computer for purposes such as to operate a peripheral device has generated complications that can make the computer less user friendly. For example, users often load only an application program, connect a peripheral device to a computer and then wonder why the peripheral device does not work. Or a user may give another user a device driver file. The second user will not be able to use the device driver file unless that user also obtained the corresponding INF file.
The currently discussed operating systems have partially addressed the above concern. The "click and drag" feature of these systems allow users to quickly move and copy files. However, despite easy movement of files via "click and drag", the task of loading multiple files on a computer will dissuade some users from fully utilizing the computer.
It would be desirable to have a system that reduces the number of files needed to install device driver files and/or library files for purposes such as to operate a hardware or software device, such as a peripheral device. By combining the files needed to operate a hardware or software device, the end user need access and load fewer files, thereby making installation of the peripheral device easier. Further, it would be desirable if such a system retained compatibility with currently available OS(s), including the OS sold under the "WINDOWS" trademark.